#ifndef __FLIGHT_NODE_H__
#define __FLIGHT_NODE_H__
#include "data.h"

flight_Node_p flight_Init();
flight_Node_p flightByAirline_Init(flight_Node_p headNode, char *airline);
flight_Node_p flight_create();
void flight_insert(flight_Node_p headNode, flight_p flight);
void flight_insert_tail(flight_Node_p headNode, flight_p flight);
char *flight_index_to_type(int index);
int seatOrRemainder_num(flight_Node_p currNode, int status);
flight_Node_p find_flightByflight_id(flight_Node_p headNode, char *flight_id);
void flight_delete(flight_Node_p currNode);                            // 删除链表
int getFlightCount(flight_Node_p headNode);                            // 获取航班数量
void free_flightList(flight_Node_p headNode);                          // 释放链表
flight_Node_p catNode(flight_Node_p newHead, flight_Node_p currNode);  // 拼接链表
flight_Node_p find_flightByNo(flight_Node_p headNode);                 // 根据航班号查询
flight_Node_p find_flightByStart(flight_Node_p headNode);              // 根据出发地查询
flight_Node_p find_flightByEnd(flight_Node_p headNode);                // 根据目的地查询
flight_Node_p find_flightByDate(flight_Node_p headNode);               // 根据日期查询
int compareTimes(const char *time1, const char *time2);                // 比较时间大小
flight_Node_p find_flightByTime(flight_Node_p headNode);               // 根据时间查询
int isValidPrice(const char *price);                                   // 判断价格是否合法
int isPriceInRange(const flight_p flight, int minPrice, int maxPrice); // 判断价格是否在范围内
int isPriceInRange1(const flight_p flight, int price);                 // 判断价格是否在范围内
flight_Node_p find_flightByPrice(flight_Node_p headNode);              // 根据价格查询
void updata_flight_id(flight_Node_p currNode);
void updata_start(flight_Node_p currNode);
void updata_end(flight_Node_p currNode);
void updata_date(flight_Node_p currNode);
void updata_time(flight_Node_p currNode);
void updata_price(flight_Node_p currNode);
void updata_seat(flight_Node_p currNode);
int find_flight_id(flight_Node_p headNode, char *flight_id);    // 查找航班号是否重复
flight_Node_p find_flight_ListBystatus(flight_Node_p headNode); // 查找正在进行的航班
#endif